深入理解 ZF 分配循环(Dispatcher工作原理)
分配是一个从 Zend_Controller_Request_Abstract 中提取module名,controller名,action名,和其中包含的可选的参数,然后实例化一个控制器并调用控制器中的action的一个过程.如果module,controller,action中的任何一个没有找到,将使用它们的默认值。
Zend_Controller_Dispatcher_Standard 指定了`index` 作为controller, action 的默认值, 用 `default` 作为module的默认值.尽管如此,还是允许开发者通过setDefaultController(), setDefaultAction(), and setDefaultModule() 等分配器方法来相应的改变默认值.
分配发生在前端控制器的一个循环中.在分配发生之前, 前端控制器通过 路由来找到 用户指定的module, controller, action 的值和可选的参数.然后就进入一个分配请求的循环.
在每一个遍历开始时, 它(Dispatcher)在请求对象中设置一个当前 action 已经分配的标志.如果一个 action 或者 pre/postDispatch 插件重置了这个标志, 分配循环将继续,并试图 分配一个新的请求.通过改变请求中的controller 和/或者 action 和重置分配标志, 开发者可能定义一个可以执行的请求链.
是行为控制器中的 _forward 方法控制了这样的分配; 通过在 任何 pre/postDispatch(), 或者action 方法中提供 一个 action, controller, module 和可选的附加参数, 你就可以 请求一个新的action。
示例代码:
复制代码 代码如下:
<?php
public function fooAction()
{
// forward to another action in the current controller and module:
$this->_forward('bar', null, null, array('baz' => 'bogus'));
}
public function barAction()
{
// forward to an action in another controller, FooController::bazAction(),
// in the current module:
$this->_forward('baz', 'foo', null, array('baz' => 'bogus'));
}
public function bazAction()
{
// forward to an action in another controller in another module,
// Foo_BarController::bazAction():
$this->_forward('baz', 'bar', 'foo', array('baz' => 'bogus'));
}
?>
总结:Dispatcher 是 ZF 实现 MVC的重要组成部分,理解Dipatcher的功能对我们更好的应用 ZF或其它框架有很重要的意义。
可以认为分配的作用就类似于,在路由之后执行相应行为的一个过程,然后 返回response 对象。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/jq/jc/7445.shtml
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
PHP识别相片是否是颠倒的
时间:2020-12-28
-
python编程有哪些ide
时间:2020-12-28
-
python开发工程师是做什么
时间:2020-12-28
-
php构造函数的作用
时间:2020-12-28
-
php怎么跟数据库连接
时间:2020-12-28
-
php实现顺序线性表
时间:2020-12-28
-
Python多重继承中的菱形继
时间:2020-12-28
-
php中break的作用
时间:2020-12-28
热门文章
-
php中常用的正则表达式使用方法
时间:2020-12-25
-
asp与php区别是什么?
时间:2020-12-27
-
PHP识别相片是否是颠倒的,并且重新摆正
时间:2020-12-28
-
Yii授权之基于角色的存取控制 (RBAC)
时间:2020-12-23
-
php的一键安装包有哪些 php环境搭建
时间:2020-12-19
-
php实现对图片对称加解密(适用身份证加
时间:2020-12-25
-
php如何理解面向对象
时间:2020-12-28
-
超详细分析php docker的原理及作用
时间:2020-12-27
-
Python控制Excel实现自动化办公
时间:2020-12-23
-
session的作用是什么
时间:2020-12-25
